Android内核和Linux内核的区别
原来的Linux系统上层应用的进程间通信主要是D-bus,dalvik被改写过, 图解Android和Linux发行版的区别: , Android内核和Linux内核的差别主要体现在如下11个方面: 1.Android Binder Android Binder是基于Openbinder框架的一个驱动。
用于抓取Android系统的各种日志,同时为内核提供回收和管理这个内存的机制,它是一个基于RAM的Buffer其源码位于drviers/staging/android/ram_console.c 10.Android timed device Android timed device提供了对设备进行定时控制功能,为了支持多个虚拟机在同一设备上高效运行,其源码位于mm/ashmem.c 5. Android PMEM(Phsical) PMEM用于向用户空间提供连续的物理内存区域。
里面关键是函数Lowmem_shrinker().作为一个模块在初始化时调用register_shrike注册一个Lowmen_shriker,其源码位于如下文件: drivers/usb/gadget/android.c drivers/usb/gadget/f_adb.c drivers/usb/gadget/f_mass_storage.c 9.Android Ram Console 为了提供调试功能,然后重新分配内存并重载数据,同其他Flash文件系统相比,同时它也提供了一个即使在设备睡眠是也会运行的时钟基准,采用Yaffs2作为MTD NAND FLASH文件系统,它将会受到一个错误提示,利用锁和定时器来切换系统状态,以将内存好用降到最低,Yaffs2使用更小的内存来保存运行状态,因此它占用内存小;Yaffs2的垃圾回收非常简单而且快速,Android的USB驱动是基于gadget框架的,每个Android应用都运行在自己的进程上,目前仅仅支持vibrator和LED设备。
源码位于drivers/staging/android/lowmemorykiller.c 4.匿名共享内存(Ashmem) 匿名共享内存为进程间提供大块共享内存,它会被vm在内存紧张的情况下调用, Android系统层面的底层是Linux。
并且在中间加上了一个叫做Dalvik的Java虚拟机,Yaffs2是一个快速稳定的应用于NAND和NOR FLash的跨平台的嵌入式设备文件性,可以根据需要杀死进程来释放需要的内存,采用消息总线的方式来进行IPC,其源码位于kernel/power/earlysuspend.c kernel/power/consoleearlysuspend.c kernel/power/fbearysuspend.c kernel/power/wakelock.c kernel/power/userwakelock.c 3.低内存管理器(Low memory Killer) Android中低内存管理器和linux标准的OOM相比,是Linux锁没有的,针对嵌入式设备做了很多优化,用于提供Android平台的进程间的通信(IPC),享有Dalvik虚拟机为它分配的专有实例, 7.Android Alarm Android Alarm提供了一个定时器用于把设备从睡眠状态唤醒,DSP和某些设备只能工作在连续的物理内存上。
其源代码位于drivers/staging/android/binder.c 2.Android电源管理(PM) Android电源管理是一个基于标准Linux电源管理系统的轻量级Andorid电源管理驱动,其源码为drviers/staging/adnroid/timed_output.c 11.Yaffs2文件系统 在Android系统中,Low memory Killer的代码非常简单。
Dalvik虚拟机执行的是Dalvik格式的可执行文件(.dex)-该格式经过优化,Android允许将调试日志信息写入一个被称为RAM Console的设备里,控制设备在不同状态下的功耗。
以达到节能的目的,器机制更加灵活,其源码位于driver/rtc/alarm.c drivers/rtc/alarm-dev.c 8.USB Gadget驱动 此驱动是一个具有标准Linux USB gadget驱动框架的设备驱动,从表面层看是Android运行库, 6.Android Logger Android Logger是一个轻量级的日志设备。
因此能够达到更好的性能;其源代码位于fs/yaffs2目录,驱动中提供了mmap、open/release和ioctl等接口,如果一个程序尝试访问Kernel释放的一个共享内存块,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/server/kaifa/11088.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
最强调试器DDD(Data Displ
时间:2021-01-07
-
Linux C语言基础IT之家——
时间:2021-01-07
-
Linux内核插入卸载模块
时间:2021-01-07
-
Linux下的c基础编程——字
时间:2021-01-06
-
Linux下的c基础编程——按
时间:2021-01-06
-
Linux下简单的cIT之家——选
时间:2021-01-06
-
linux通过/sys/class/gpio文件操
时间:2021-01-06
-
通过Java实现Linux系统下g
时间:2021-01-06
热门文章
-
开发一个Linux调试器(四):Elves和dwarv
时间:2020-12-22
-
开发一个Linux调试器(五):源码和信号
时间:2020-12-22
-
shell脚本之始
时间:2020-12-29
-
Linux下简单的cIT之家——选择法排序
时间:2021-01-06
-
linux中gdb的可视化调试
时间:2020-12-27
-
如何挑选你的第一门IT之家语言
时间:2020-12-26
-
通过Java实现Linux系统下grep指令的功能
时间:2021-01-06
-
Linux下的c基础编程——按原顺序插入元素
时间:2021-01-06
-
获取linux机器上的网卡地址
时间:2020-12-26
-
Linux内核插入卸载模块
时间:2021-01-07
